<?php
	require_once 'LoginHandler.php';
	require_once 'LoginView.php';
	
	/**
	 * LoginController använder vi för att "prata" och skicka data mellan LoginHandler och LoginView.
	 */
	class LoginController {
		
		/**
	 	* DoControll är till för att kontrollera vilket tillstånd användaren befinner sig i: 1.Inloggad, 2.utloggad, 3.vill logga in, 4.vill logga ut.
		* @return string $returnstring innehåller den HTML-kod som ska skrivas ut till användaren.
	 	*/
		public function DoControll()
		{
			$returnstring = "";			
			$message = LoginView::EMPTY_MESSAGE; 
			$loginHandler = new LoginHandler();
			$loginView = new LoginView();					
			
			// Vi börjar med att anropa User Is Logged In i loginHandler för att kontrollera om användaren är inloggad.
			// Är användaren inloggad så anropar vi Tried To Log Out för att se om användaren försökt logga ut (klickat på logga ut knappen.).
			// Har användaren klickat på logga ut knappen anropar vi funktionen User Logs Out som loggar ut användaren. 
			// Vi skickar även med en variabel som innehåller en siffra som representerar ett visst tillstånd i applikationen som senare översätta i LoginView.
			// Har användaren inte försökt logga ut så är han/hon inloggad och ett meddelande skrivs ut.
			if($loginHandler -> UserIsLoggedIn()){
				
				if ($loginView -> TriedToLogOut()) {
						
					$loginHandler -> UserLogsOut();
					$message = LoginView::USER_LOGS_OUT;
										
				} else{
					$message = LoginView::USER_IS_LOGGED_IN;
				}
			} else {
				if($loginView -> TriedToLogIn()){
					
					// Vi hämtar användarnamn och lösenord från formuläret (genom metoderna Get Username och Get Password i loginView) och lägger i varsin variabel.	
					$userName = $loginView -> GetUserName();
					$password = $loginView -> GetPassword();
					
					// Vi försöker logga in med uppgifterna som vi hämtade ut från formuläret. 
					if ($loginHandler -> UserLogsIn($userName, $password)) {
						
						// Kontrollerar om användaren vill bli ihågkommen, genom att anropa Get Remenber Me. 
						// Vill han/hon det så skickar vi med användarnamn och lösenord till funktionen Remeber Me som sparar uppgifterna i COOKIES.
						if($loginView -> GetRememberMe()){
							$loginView -> RememberMe($userName, $password);							
						}	
						$message = LoginView::SUCCESS_LOGGIN;
											
					} else{
						$message = LoginView::WRONG_PASSWORD_N_USER;						 
					}
				}				
			}
			
			// Är användaren inloggad/utloggad så skrivs ett "uloggningsformulär"/"inloggningsformulär" ut. 
			// Genom att vi anropar funktoin Create Logout Box/Create Log In Box, som har en inparameter, $message, vars innehåll beror på vilket tillstånd funktionen är i.
			if ($loginHandler -> UserIsLoggedIn()) {
				$returnstring = $loginView -> CreateLogoutBox($message);
			} else {
				$returnstring = $loginView -> CreateLogInBox($message);
			}			
			return $returnstring;
		}
	}	
?>